- AJAX проверка загружаемых изображений компонентов (чтобы в случае ошибки изображения оставались на месте)

Степени важности TODOS:
1 - важно, 5 - не важно

TODO:

1) Важность: 2 - DONE
    //TODO: смотреть время получения ответа: здесь может зависнуть

2) Важность: 3
    web.php, 'on ' . \yii\web\User::EVENT_AFTER_LOGIN
    Отложено - реализовать потом.

3) Важность: 4
    email для ошибок

4) Важность: 3
    по умолчанию устанавливать часовой пояс при создании нового аккаунта (по выбранному языку)

5) Важность: 3
    Сменить карту (или расширить) на mapbox.com или другую (можно несколько на бесплатный период)

6) Важность: 5
    http://pizza.local/admin/ - для не-админа - сделать нормальный вывод

7) Важность: 4
    `Мягкое` удаление пользователя

8) Важность: 2
    Регулярная архивация БД на продакшене.

9) Важность: 5
    В ComponentSearch сделать проверку этого участка кода:
    if ($userId = \Yii::$app->user->getId()) {
        $query->andFilterWhere([
            'user_id' => $userId,
        ]);
    }

10) Важность: 5 (при выходе на зарубежку - 1)
    Проверить работу изначального IP для карты (последняя проверка указывает на Москву вместо местоположения прокси).

11) Важность: 5
    Добавить изображение(я) магазина, расписание работы, возможно другую информацию

12) Важность: перспектива
    Игра в ожидании доставки пиццы (открывается после заказа).

13) Важность: перспектива
    Крипта для заказа.

14) Важность: 5 (возможно выше)
    Разобраться с защитой фрейма формы заказа от размещения на сайте с другим доменом.
    На данный момент есть подозрение, что значение JS "referrer", используемое для сверки, можно подделать.

15) Важность: 3
    DefaultController::actionGetOrderForm() - содержит TODO для реализации
    app\modules\vendor\controllers\DefaultController::actionGetOrderForm() - //TODO: выносить домен отдельно
    перенёс в:
    Profile::getProfileByUrl()

16) Важность: 2
    /vendor/test в админке в iframe загружать только после открытия iframe и обновлять каждый раз при открытии (вдруг появились изменения)

17) Важность: 5
    'Резервный Email' перенести в аккаунт (туда же можно телефон). В профиль добавить изображение и телефон.

18) Важность: 5
    Рассмотреть возможность отправки сигнала о новом заказе в Twitter, Telegram, Wassup и др.

19) Важность: 4
    Значение amount по умолчанию для компонента (сейчас устанавливается 1 если оно пустое,
    и пустое по умолчанию при создании нового компонента)

20) Важность: 3
    Сделать `component`, `co_worker`: `user_id` - IS NOT NULL

21) Важность: 3
    День рождения сотрудника неправильно показывается если не установлен.

22) Важность: 5
    Отслеживать изменение цены при совершении заказа (вдруг пока пользователь заказывал - цена на момент заказа изменилась).

23) Важность: 3
    Предусмотреть отмену заказа.

24) Важность: 5
    При регистрации дублируется
    "Ваш аккаунт успешно создан, сообщение с дальнейшими инструкциями отправлено на ваш адрес электронной почты"

25) Важность: 1
    В Mailer.php в function sendMessage($message) добавил строки (на боевом)

		$ch = $message->getSwiftMessage()->getChildren();

		return mail($address, $message->getSubject(), $ch[1]->getBody());

	Настроить email и удалить их.

26) Важность: 2
    В ShopOrderForm
    //TODO: здесь проверить соответсвие полученных данных о цене и прочим с данными БД

27) Важность: 3
    Проверять заказ по времени и ингридиентам на дублирование.

28) Важность: 5
    Добавить индекс и ключ уникальности к order_uid в таблице shop_order

29) Важность: 5
    В форме данных заказа ссылку на заказ изменить на сообщение что это текущая страница и сделать копирование в буфер ссылки, и добавить в избранное.

30) Важность: 6
    В JS скриптах присывать валюту как принято (см. _content.php, elems['.total-price'].text(price + ' {$jsHtmlCaptions['currency']}');

31) Важность: 5
    Разобраться с динамикой (@media screen and (max-widt...) .main-container формы заказа чтобы был нормальный отступ по краям, в соотв. с принятыми ширинами экрана.

32) Важность: 2
    Сохранять в куках состояние при сборке пиццы.

33) Важность: 6
    Для интернационализации написать JS фунцию составления цены в зависимости от валюты (см. форму заказа, например, _content.php).

34) Важность: 2
    //TODO: костыль - исправить в _content.php
    elems['.vertical-pane'].css('overflow', 'visible');

35) Важность: 6
    Посмотреть (возможно в xj/yii2-jplayer-widget) как правильно разместить в assets то что сейчас js/jquery.jplayer.swf

36) Важность: 3
    Размер файлов (особ. видео) при загрузке - обрабатывать ошибки.

37) Важность: 5
    Разместить изображения в спрайты.

38) Важность: 1
    Архивация залитых компонентов (на email).

39) Важность: 6
    Архивные sql файлы пока складываются вместе с изображениями при архивации
    (/img/compo) - удалить их вручную и вообще что-то с этим делать.

40) Важность: 2
    В файле _content_js.php и вообще в коде что-то делать, обрабатывать случай если нет ни одного активного пользователя ($activeUsers).

41) Важность: 5
    Вернуть обновление для заказов (возможно, удаление), с мерами предосторожности, возможно, архивацией.

42) Важность: 6
    Сделат оффлайн - версию чтобы можно было производить в браузере (возможо, приложении) максимум манипуляций без подключения к интернету.

43) Важность: 3
    В форме заказа: `Поставщики` => `Места заказа` или типа того

44) Важность: 4
    По Кладр (фиас) остановился на том, что не могу воспроизвести команду с https://github.com/wertex/yii2-fias-extended
    ./yii fias/import-dbf data\ADDROB66.DBF
    поскольку Call to undefined function ejen\fias\console\controllers\dbase_open()
    похоже эта функция установлена только на php4.0 - надо в консоли переключить на эту версию видимо.

45) Важность: 6
    жмешь на карту и где нажал то появляется адрес в поле "адрес доставки"
    для имени - начинаешь вводить к примеру "Ва" и внизу появляется выбор типа "Валя, Валентин, Валера..."

46) Важность: 4
    Внедрить icon_name и icon_color в профайл

47) Важность: 5
    Размер иконки `icon_image_path` в таблице `profile` размещать при заливании изображения а не искать при выводе на карту.

48) Важность: 1(0)
    На форме заказа - определять город по геолокации.

49) Важность: 1 - для интернационализации.
    Переводить в order-form.js:    TODO: mark_1

50) Важность: 2
    В setup показывает в заказах "Всего пиццерий: 4", в то время как пиццерия одна (видимо т. к. не установлены координаты для других).

51) Важность: 3
    /vendor/order-create-ajax - проверять на CSRF атаки (запрос из order-form.js)

52) Важность: 5
    Разобраться с использованием классов типа "UserCustomer".
    На данный момент решил пока использовать единую таблицу для пиццерий и пользователей т. к. запутался с
    переопределением классов
    'classMap' => [
        'User' => \common\models\db\user\UserCustomer::class,
        'Profile' => \common\models\db\user\ProfileСustomer::class,
        'SocialNetworkAccount' => \common\models\db\user\SocialNetworkAccountCustomer::class,
        'Token' => \common\models\db\user\TokenCustomer::class,
        'ResendForm' => \common\models\forms\ResendForm::class,
    ],

53) Важность: 5
    Проверять oauth Вконтакте (меняются версии, переменная $apiVersion): https://vk.com/dev/constant_version_updates
    См. также https://github.com/yiisoft/yii2-authclient/issues/276

54) Важность: 3
    Обрабатывать ошибки oauth (для генерации ошибки установи напр. $apiVersion в меньшую версию).

55) Важность: 3
    Сделать TODO в app\controllers\SecurityController в функции authenticate()

56) Важность: 5
    Для аккаунтов пользователя, созданных при регистрации через соцсети, сделать при попытке войти (зарегаться) через пароль
    отдельный пользовательский функционал: мол, вы зареганы через соцсеть, войдите через соцсеть или установите пароль через email.

57) Важность: 4
    Округлять компоненты хаком прямоугольного окна вместо использования gl.functions.adjustComponentToSelectHeight()

58) Важность: 3
    Сделать информативную панель администратора для меня,
    что бы можно было на сайте как он есть поменять легко любое значение,
    и после подтверждения, оно оставалось неизменным, фиксировалось

59) Важность: 2
    Реализовать //TODO: дождаться удаления перед тем как класть

60) -- Отменено: будет реализовано через симлинк (кроме локалхост). Важность: 5(0) - релиз
    Вернуть при релизе:
    //TODO: test_temp

61) Важность: 4
    при добавлении ингредиента в форме заказа коммент Руслана:
    "И добавляются не видно куда, приходится прокручивать, чтобы убедиться" ...

также:
[16:50, 25.07.2020] Руслан: Мелкие интервалы пусть везут с запасом, кпримеру заказалм ф25(на сайте), пусть пиццерии везут 27,если нет 25
[16:50, 25.07.2020] Руслан: У нас свои размеры стандартные
[16:52, 25.07.2020] Руслан: Когда мы написуем удобные нам пиццы, при следующих регистрациях, пиццерии должны будут подтвердить о возможности изготовить что мы пропишем в договоре, в другом случае этот заказа получат те кто подтвердил возможность готовить что у нач на сайте

Тоесть мы забиваем всё что есть по пиццам у пиццерий партнёров (сами они потом),
а при визуале клиент выбрал пиццу редкую кпримеру, гавайскую и высветились только пиццерии которые вносили данную пиццу,
либо кпримеру её рвссматривает только бабушка


62) Важность: 5
    Убрать из глобальной области видимости totalAddedElements, elems и пр. переменные (order-form.js).
    И разобраться со склейкой файлов.

63) Важность: 3
    gl.functions.restoreOrderPanel()
    //TODO: !!! to FIX this hach
    сделать норм. функционал, с переводами также, в одно место весь html

-- 64) DONE Важность: 3
    Сотрудники должны иметь несколько функций одновременно.

65) Важность: 1 (т. к. быстро)
    Поставить на поле `worker_site_uid` таблицы `co_worker` индекс и значение уникальности

66) Важность: 5
    Установить на индивидуальные страницы сотрудников no-index для поисковиков

67) Важность: 3
    Уникальный идентификатор личного сайта сотрудника
    - сделать ограничение на ввод неверных символов и автогенерацию

68) Важность: 5
    В заказах: см. on_deal, on_current - доработать в перспективе если обнаружится несовпадение.

69) Важность: 5
    Сделать обработку ошибок (gl.handleJqueryAjaxFail(), gl.handleFailCustom()) для ajax - запросов
    чтобы ошибки были видны но не мешали пользователю.

70) Важность: 2
    В функции ShopOrderForm::save() (и прочих записях в БД) реализовать транзакции.

-- 71) Важность: 2 - возможно не стоит делать, подумать
    Что-то сделать с зацикливанием сокета из-за ошибки, чтобы он вылетал нормально и перезагружался???

72) Важность: 2
    gl.functions.websocket.send - сделать обработку ошибки если сокет не готов

73) Важность: 4
    actionAcceptOrderByMerchant() - сделать только через POST

74) Важность: 2
    Реализовать блокировку кеша в функциях чтения/записи в классах SSE (напр. производных от OrderHandlingBackend)
    Или перевести на сокеты, что-то придумать.

75) Важность: 1 (можно быстро сделать) -5
    Удалить get-active-orders и все что с ним связано в приеме заказов.

76) Важность: 1
    Проставлять статусы заказов только после подтверждения со стороны пользователя о получении,
    а не по факту обработки состояния у админа.

77) Важность: 1(0)
    При завершении заказа:
    //TODO: проставить завершение заказа для всех других пользователей

78) Важность: 4(0)
    Сортировать статусы по времени добавления (добавить поле создания).
    Напр. в backend\modules\admin\widget\ShopOrders::getOrdersGroupedByStatusType()

79) Важность: 5
    Руслан:
    Напиши на ПОТОМ: продумать на предмет от хода от маршрута, кпримеру доставщика, чтобы явно было видно,
    что он поехал не по маршруту, ну вообщем, чтобы когда у нас была полная карта всех доставщиков,
    чтобы мы могли легко видеть всё, как на примере:, смотри
    [20:08, 28.01.2021] Руслан: Ну, да и чтобы нажать кпримеру на уурьера и вся информация выскочила
    [20:08, 28.01.2021] Руслан: Вдруг кто-то спросит, чтобы было что ответить
    [20:08, 28.01.2021] Руслан: Время заказа, время в пути, и тд
    [20:09, 28.01.2021] Руслан: Кто то жалуется, кпримеру в чате, а у тебя информации сразу есть
    [20:09, 28.01.2021] Руслан: Об абоненте
    [20:10, 28.01.2021] Руслан: Иногда нужно успокоить, всякий случай

80) Важность: 5
    Проверить `user_id` в `shop_order`. Пока закомментировал ф-ю User::getShopOrders() - убрать её рудименты если не нужна.

81) Важность: 5
    Общиее ресурсы (common.js, некоторые изображения, еще что?) вынести на один сайт.

82) Важность: 5
    Статический код договоров (и вообще всех редко используемых попапов и прочих невидимых сначала элементов)
    вынести в ajax подгрузку.

83) Важность: 5
    Проверить чтобы где надо `created_at`, `updated_at` поля имели индексы.
    И сортировка чтобы была не по `created_at`, `updated_at`, первичному ключу, а по специальному полю (рассмотреть
    такую возможность).

84) Важность: 4
    Реализовать
    [20:02, 27.02.2021] Руслан: Я понял, поидее бы наряд заказ по вайфаю вылезал с названием пиццы, а там и набор ингридиентов
    [20:03, 27.02.2021] Руслан: И этот некий наряд заказ отдавал бы вместе с курьером,
    [20:03, 27.02.2021] Руслан: При получении, росписаться клиент должен, чтобы не было проблем
    [20:05, 27.02.2021] Руслан: Если при перечислении денег, вперёд оплат, он должен, клиент подписать получение пиццы или прочего, для урегулирования проблем, или внутри точно должна быть такая бумажка с пиццей, ну представь
    [20:06, 27.02.2021] Руслан: 15 пицц, заказ, и как принимать будут
    [20:06, 27.02.2021] Руслан: И как урегулировать спор в этот момент
    [20:06, 27.02.2021] Руслан: Тоесть клиент пьяный будет звонить и..
    [20:07, 27.02.2021] Руслан: А нужно наряд заказ, по номеру всё отследить, вдруг курьер забыл в машине 10 пицц
    [20:13, 27.02.2021] Руслан: Нам кстати получается надо залить все пиццы как то как Маргариту, имеющиеся в Москве, чтобы у нас были, поле для гольфа, и пиццерии могли заливать уже из имеющихся
    [20:14, 27.02.2021] Руслан: А ингридиенты мы можем оттуда брать в банк ингридиентов, но не перегружать, для не перезагрузки, нужно будет разрешение на заливку в общую базу, чтоли ингридиента или пиццы
    [20:15, 27.02.2021] Руслан: Для не перегрузки информацией *
    [20:16, 27.02.2021] Руслан: Так у нас получится удобство для клиента, мини клуб, можно выбирать будет из пиццерий, когда клиент примет пиццу будет наклейки или пакет именно той пиццерии, что привезла
    [20:17, 27.02.2021] Руслан: И клиент сможет в следующий раз идти именно к этой пиццерии, через наш сервис
    [20:17, 27.02.2021] Руслан: А это уже клуб,

85) Важность: 5
    Правила для работы с файлами, не являющимися страницами:
        - сигнализировать об отсутствии файла
        - выводить вместо страницы 404 пустое изображение, к примеру

86) Важность: 6
    CourierImages => CourierImage

87) Важность: 3 (Руслана)
[23:08, 28.03.2021] Руслан: Нужно прикрутить расстояние и за сколько доедет, привезет пиццу
[23:09, 28.03.2021] Руслан: Это нужно сделать на этапе подтверждения пиццерии, клиент должен выбрать ему удобное время готовки, доставки

88) Важность: 3 (Руслана)
[23:44, 31.03.2021] Руслан: Надо чтобы когда кидаешь что либо в пиццу, визуально показывалось, а то не понятно, произошло ли действие,
[23:46, 31.03.2021] Руслан: Например количество как то задергалось в момент добавки или увеличилась 2, на количестве односекундно и стала прежней, тогда ощущения от набора понятны, и именно этоц ингредиент в этом поле появился, который добавили, тоесть вверх переместился, перед глазами

89) Важность: 5 (Ladlen's idea)
Использовать анимацию с пиццей и животными, которые пиццу доставляют и пр.

90) Важность: 5 (Ladlen's idea)
    При работе с курьерами (admin/courier-data/create) сделать возможность выбирать их из общего списка сотрудников.


91) Важность: 5
    Применить новый тег (поискать название) для html5 элементов, которые не должны входить в DOM.


92) Важность: 2(1)
    Сделать поле `type` для пользователя, удалить `customer`(или как там) - пользовательский класс
    Удалить ненужныый virtual код.

93) Важность: 0 - 10
    Сделать игровой мир, в котором те или иные заведения будут как элементы игры.

94) Важность: 0(1)
    Расшарить видео и звуки (через symliks, как img и пр.)

95) Важность: 4-5
    Ссылки на изображения делать в common как и сейчас, но в common разделить их по frontend, content и собственно
    на common (общие).

96) Важность: 5
   При добавлении иконок добавлять их в один слой (если так можно/нужно). Вообще изучи leaflet и сделай как нужно JS.

97) Важность: 5
    Сделать по диалогу:
    Да, еще один момент: можно ли простым людям делать пиццу, может ли быть слоган типа "создай пиццерию дома?
    наверное, нелья, но подумать над подобной идеей можешь

98) Важность: 3-70
    Построить дерево профессий (функционал для его составления), - в целях "общежизненнеой" логистики.
    Чтобы наглядно было видно как получить, и сколько стоит создать той или иной продукт.
    Начиная с одиного дикаря до высокоорганизованного общества.
    Таким образом содать логистическую карту(ы). На все случаи жизни.
    Хранить в общей базе секреты мастерства и т.п.
    Возможно, сделать это в сети блокчейн!!!

99) Важность: 3
    Разобраться с дубликатами JS-файлов (например geo.js файлы похоже дублируются).

100) Важность: 1(0)
    Сделать расписание работы пиццерии. Как начинает обработку заказов, когда заканчивает.
    Просчитывать занятость поваров и курьеров.

101) Важность: 1
     При старте обработки заказа, восстанавливать панель автоматически при перезагрузке.
     Если панели не было или подтверждения не было,
     то выбранные продукты исчезают при перезагрузке,
     с возможносью восстановить при нажатии на кнопку восстановления прежней сессии.

102) Важность: 5(6)
    Размещять где получится изображения на одном изображении.

103) Важность: 4
    Где нужно блокировать кнопки от второго нажатия при ajax запросах.

104) Важность: 1
    Общение в watsapp:
    Руслан: нету курьера
    Ladlen: это записал как баг. Подозреваю, что страниа приема заказов еще не подгрузилась, чтобы начать принимать заказы, в общем баг хитрый

105) Важность: 5(1)
    Geocode => Locality

105) Важность: 3
    [12:15, 6/4/2021] Руслан: У приложения каршеринг :
    Кпримеру есть инструкции, если позвонит клиент и сообщает о например спущенном колесе(когда увидели, какая причина,....)
    [12:16, 6/4/2021] Руслан: Нужно кпримеру написать инструкции, на случай всяких вариантов, и в чат бот приложения их зашить
    [12:17, 6/4/2021] Руслан: , либо нет нужного ответа, связаттся со специалистом, или оставить контаки для связи.. и идет связь
    [12:18, 6/4/2021] Руслан: Сервисный менеджер получает заявку и звонит кллиенту, чтобы кпримеру, дать задание программисту, вернуть деньги или прочее

106) Важность: 2
    Группировка пиццерий на карте.

107) Важность: 0(6)
    Когда появится время (кажется уже рассматривал такую версию, но не принял почему-то).
    Переделать базы данных на храние пользователем с приставкой, определяющей его уникальность.

108) Важность: 1 (Руслан требует)
    Должен быть активирование, регистрация ддя курьера,
     там телефон, пиццерия должна регистрироваться,
     клиент, дальше клиент заказал,
     оплатил, пицца взяла, поехал курьер,
     время и путь до клиента,
     вот что меня интересует

109) Важность: 3 (рассмотреть на нужность использования this.markers)
      var allMarkersGroup = new L.(this.markers);
      this.allMarkers => this.this.markers

110) Важность: 0-5
    вынести JS - код из фалов php (сильно тормозят)

112) Важность: 5-7
    Как-то сделать, чтобы ajax-запросы автоматически обрабатывали ошибки и т.п.